#pragma once

class UserConfig 
{
public:
	// storage
	irr::core::stringc		m_strConfigFile;

	// screen
	int						m_iScreenWidth;
	int						m_iScreenHeight;
	BOOL					m_bFullscreen;
	BOOL					m_bScreenResizeable;
	F32						m_f32MouseScaleX;		// 
	F32						m_f32MouseScaleY;		// 

	// graphics
	BOOL					m_bShadows;
	int						m_iAntiAliasing;		
	int						m_iAnisotropicFiltering;
	bool					m_bTrilinearFiltering;	// if true set triliner filtering material flag

	// audio
	BOOL					m_bAudioEnabled;		// if true audio is enabled
	F32						m_f32SoundVolume;		// master sound effect volume	
	F32						m_f32MusicVolume;		// master ambient sound volume

	// tutorial
	BOOL					m_bShowTutorial;		// if true show tutorial before game

	// input
	irr::EKEY_CODE			m_aeKeys[ eMaxInputActionType ];

	//! initialize and load from xml file
	RCODE			Startup( const char * pConfigXmlFileName );
	//! shutdown
	RCODE			Shutdown( void );

	//! reset settings to default
	void			Reset( void );
	//! read settings from file
	RCODE			ReadConfig( void );
	//! write settings from file
	RCODE			WriteConfig( void );
};

typedef VxSingleton<UserConfig> UserConfigImp;
